streamlit-nightly 1.44.2.dev20250416__py3-none-any.whl → 1.44.2.dev20250417__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. streamlit/proto/MetricsEvent_pb2.py +4 -4
  2. streamlit/proto/MetricsEvent_pb2.pyi +4 -1
  3. streamlit/proto/NewSession_pb2.py +4 -4
  4. streamlit/proto/NewSession_pb2.pyi +4 -1
  5. streamlit/runtime/app_session.py +8 -6
  6. streamlit/runtime/metrics_util.py +36 -2
  7. streamlit/static/index.html +1 -1
  8. streamlit/static/static/js/{ErrorOutline.esm.BYHxp3m6.js → ErrorOutline.esm.D1YnfxHk.js} +1 -1
  9. streamlit/static/static/js/{FileDownload.esm.ApdK5yXz.js → FileDownload.esm.CLJXxgV6.js} +1 -1
  10. streamlit/static/static/js/{FileHelper.GdWJakHI.js → FileHelper.BHzgawSh.js} +1 -1
  11. streamlit/static/static/js/{FormClearHelper.DJyHVHSH.js → FormClearHelper.CiT2avpL.js} +1 -1
  12. streamlit/static/static/js/{Hooks.ChGPcfs_.js → Hooks.C7DoFAsE.js} +1 -1
  13. streamlit/static/static/js/{InputInstructions.BXUos__H.js → InputInstructions.1ktgI5Zf.js} +1 -1
  14. streamlit/static/static/js/{ProgressBar.OOqvhQG5.js → ProgressBar.B-m8Pcc_.js} +2 -2
  15. streamlit/static/static/js/{RenderInPortalIfExists.CyUrss_J.js → RenderInPortalIfExists.UlyqzBTE.js} +1 -1
  16. streamlit/static/static/js/{Toolbar.BHMuD9RK.js → Toolbar.Bu3GiYVX.js} +1 -1
  17. streamlit/static/static/js/{base-input.DDkkgpGf.js → base-input.Dku6WvpS.js} +4 -4
  18. streamlit/static/static/js/{checkbox.MhC8ubRB.js → checkbox.mz5gOMKJ.js} +2 -2
  19. streamlit/static/static/js/{createSuper.CqhU4QuZ.js → createSuper.C0BzpJjg.js} +1 -1
  20. streamlit/static/static/js/{data-grid-overlay-editor.BBwX0oOt.js → data-grid-overlay-editor.DiqoYT48.js} +1 -1
  21. streamlit/static/static/js/{downloader.DXPcTUFo.js → downloader.CAP3tiYQ.js} +1 -1
  22. streamlit/static/static/js/{es6.CEXDu3sA.js → es6.DqL75OZp.js} +2 -2
  23. streamlit/static/static/js/{iframeResizer.contentWindow.DWm0kUUF.js → iframeResizer.contentWindow.C9cMqH_8.js} +1 -1
  24. streamlit/static/static/js/{index.DzihNvNB.js → index.0ur-mug2.js} +1 -1
  25. streamlit/static/static/js/{index.DY1To1KX.js → index.2NBXJp_l.js} +1 -1
  26. streamlit/static/static/js/index.B0n_vnpx.js +3 -0
  27. streamlit/static/static/js/index.B2Dp1gHJ.js +1 -0
  28. streamlit/static/static/js/{index.Ch1zIHG2.js → index.B49PYj78.js} +1 -1
  29. streamlit/static/static/js/{index.mAm8TEUm.js → index.B9zQLzcb.js} +1 -1
  30. streamlit/static/static/js/{index.BYF0MjVi.js → index.BMq-uQqp.js} +1 -1
  31. streamlit/static/static/js/{index.CPLoBLa6.js → index.BQLXsaDk.js} +2 -2
  32. streamlit/static/static/js/{index.HNkSYNRg.js → index.BTKYbohA.js} +1 -1
  33. streamlit/static/static/js/{index.D3-O5hIV.js → index.BWwi0-8w.js} +1 -1
  34. streamlit/static/static/js/{index.DqnbRXDR.js → index.BXFSjo3B.js} +1 -1
  35. streamlit/static/static/js/{index.BN-Cqjtr.js → index.BZhXwgKt.js} +1 -1
  36. streamlit/static/static/js/{index.a9NsHJhQ.js → index.BaXHw-8Q.js} +1 -1
  37. streamlit/static/static/js/{index.BmtdqFfB.js → index.BfGvICUE.js} +1 -1
  38. streamlit/static/static/js/{index.DEkTRzl5.js → index.Bfm4YOP_.js} +1 -1
  39. streamlit/static/static/js/{index.DcRGK1Fw.js → index.C89_PWNN.js} +2 -2
  40. streamlit/static/static/js/{index.b1kLMo8r.js → index.CC65c-T9.js} +1 -1
  41. streamlit/static/static/js/{index.B09m8ltk.js → index.CNictWM2.js} +1 -1
  42. streamlit/static/static/js/index.CVScnAor.js +1 -0
  43. streamlit/static/static/js/{index.BU77_yo5.js → index.CW6Jh2uG.js} +1 -1
  44. streamlit/static/static/js/{index.CwjEdNBc.js → index.CfxnI87h.js} +1 -1
  45. streamlit/static/static/js/index.CmT6dLLy.js +1 -0
  46. streamlit/static/static/js/{index.DCKU7zCS.js → index.CnEhB-fE.js} +69 -69
  47. streamlit/static/static/js/{index.xQw12X8c.js → index.CxREAMVk.js} +6 -6
  48. streamlit/static/static/js/{index.CsUhYot_.js → index.DMl1udgs.js} +1 -1
  49. streamlit/static/static/js/{index.W-ibDLkH.js → index.DlKg7FR2.js} +1 -1
  50. streamlit/static/static/js/{index.DvU9hkdF.js → index.DtkU_G3Z.js} +1 -1
  51. streamlit/static/static/js/{index.B1th2sQW.js → index.Dv1t4-PM.js} +2 -2
  52. streamlit/static/static/js/{index.Cy9Ir-PP.js → index.IROfSyE9.js} +1 -1
  53. streamlit/static/static/js/index.ZmGLVwWD.js +1 -0
  54. streamlit/static/static/js/{index.B-O_wE0K.js → index.e6kwCR7s.js} +1 -1
  55. streamlit/static/static/js/{index.Cwa6nJdn.js → index.gBUUVGOM.js} +1 -1
  56. streamlit/static/static/js/{index.B06gV0xU.js → index.gI1I4ciB.js} +1 -1
  57. streamlit/static/static/js/{index.BghhhCL1.js → index.ltG9E0Ez.js} +2 -2
  58. streamlit/static/static/js/{index.F3n9jlGK.js → index.o5IBEZ9z.js} +1 -1
  59. streamlit/static/static/js/{index.XtneMYik.js → index.tTEmROeK.js} +2 -2
  60. streamlit/static/static/js/{index.6b1mTySV.js → index.zZel4nfV.js} +1 -1
  61. streamlit/static/static/js/{input.D00LElK2.js → input.BmYm0CET.js} +2 -2
  62. streamlit/static/static/js/{memory.CGCErNWl.js → memory.9cXtH-RQ.js} +1 -1
  63. streamlit/static/static/js/{mergeWith.DPocir3h.js → mergeWith.OMNzEmuQ.js} +1 -1
  64. streamlit/static/static/js/{number-overlay-editor.C9aaVRxu.js → number-overlay-editor.nGsU-IsU.js} +1 -1
  65. streamlit/static/static/js/{possibleConstructorReturn.DXXsz__z.js → possibleConstructorReturn.CKIaFpbd.js} +1 -1
  66. streamlit/static/static/js/{sandbox.Br2VBN1F.js → sandbox.rqJvxxMI.js} +1 -1
  67. streamlit/static/static/js/{textarea.CQnqAl1g.js → textarea.B4MNRqGE.js} +2 -2
  68. streamlit/static/static/js/{timepicker.BmIoDoBw.js → timepicker.BKET0TV7.js} +4 -4
  69. streamlit/static/static/js/{toConsumableArray.CfCqHWaY.js → toConsumableArray.BV-SUrrM.js} +1 -1
  70. streamlit/static/static/js/{uniqueId._zK6ugwW.js → uniqueId.BmEYrlc2.js} +1 -1
  71. streamlit/static/static/js/{useBasicWidgetState.C_V8mPrP.js → useBasicWidgetState.BctdjMds.js} +1 -1
  72. streamlit/static/static/js/useOnInputChange.BJkQTmTx.js +1 -0
  73. streamlit/static/static/js/withFullScreenWrapper.Bgp3yFiP.js +1 -0
  74. {streamlit_nightly-1.44.2.dev20250416.dist-info → streamlit_nightly-1.44.2.dev20250417.dist-info}/METADATA +1 -1
  75. {streamlit_nightly-1.44.2.dev20250416.dist-info → streamlit_nightly-1.44.2.dev20250417.dist-info}/RECORD +79 -79
  76. streamlit/static/static/js/index.BlpjlGOL.js +0 -1
  77. streamlit/static/static/js/index.C6wX31--.js +0 -3
  78. streamlit/static/static/js/index.D0O2ysfC.js +0 -1
  79. streamlit/static/static/js/index.YLN-j6r-.js +0 -1
  80. streamlit/static/static/js/index.iO67MDAb.js +0 -1
  81. streamlit/static/static/js/useOnInputChange.5wieT2fD.js +0 -1
  82. streamlit/static/static/js/withFullScreenWrapper.mszDqn7s.js +0 -1
  83. {streamlit_nightly-1.44.2.dev20250416.data → streamlit_nightly-1.44.2.dev20250417.data}/scripts/streamlit.cmd +0 -0
  84. {streamlit_nightly-1.44.2.dev20250416.dist-info → streamlit_nightly-1.44.2.dev20250417.dist-info}/WHEEL +0 -0
  85. {streamlit_nightly-1.44.2.dev20250416.dist-info → streamlit_nightly-1.44.2.dev20250417.dist-info}/entry_points.txt +0 -0
  86. {streamlit_nightly-1.44.2.dev20250416.dist-info → streamlit_nightly-1.44.2.dev20250417.dist-info}/top_level.txt +0 -0
@@ -15,7 +15,7 @@ _sym_db = _symbol_database.Default()
15
15
  from streamlit.proto import PageProfile_pb2 as streamlit_dot_proto_dot_PageProfile__pb2
16
16
 
17
17
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"streamlit/proto/MetricsEvent.proto\x1a!streamlit/proto/PageProfile.proto\"\xea\x06\n\x0cMetricsEvent\x12\r\n\x05\x65vent\x18\x01 \x01(\t\x12\x14\n\x0c\x61nonymous_id\x18\x02 \x01(\t\x12\x15\n\rmachine_id_v3\x18\x03 \x01(\t\x12\x13\n\x0breport_hash\x18\x04 \x01(\t\x12\x0b\n\x03\x64\x65v\x18\x05 \x01(\x08\x12\x0e\n\x06source\x18\x06 \x01(\t\x12\x19\n\x11streamlit_version\x18\x07 \x01(\t\x12\x10\n\x08is_hello\x18\x08 \x01(\x08\x12\x0e\n\x06\x61pp_id\x18! \x01(\t\x12\x12\n\nsession_id\x18# \x01(\t\x12\x16\n\x0epython_version\x18$ \x01(\t\x12\x11\n\thosted_at\x18\t \x01(\t\x12\r\n\x05owner\x18\n \x01(\t\x12\x0c\n\x04repo\x18\x0b \x01(\t\x12\x0e\n\x06\x62ranch\x18\x0c \x01(\t\x12\x13\n\x0bmain_module\x18\r \x01(\t\x12\x12\n\ncreator_id\x18\x0e \x01(\t\x12\x18\n\x10\x63ontext_page_url\x18\x0f \x01(\t\x12\x1a\n\x12\x63ontext_page_title\x18\x10 \x01(\t\x12\x19\n\x11\x63ontext_page_path\x18\x11 \x01(\t\x12\x1d\n\x15\x63ontext_page_referrer\x18\x12 \x01(\t\x12\x1b\n\x13\x63ontext_page_search\x18\x13 \x01(\t\x12\x16\n\x0e\x63ontext_locale\x18\x14 \x01(\t\x12\x1a\n\x12\x63ontext_user_agent\x18\x15 \x01(\t\x12\r\n\x05label\x18\x16 \x01(\t\x12\x1a\n\x08\x63ommands\x18\x17 \x03(\x0b\x32\x08.Command\x12\x11\n\texec_time\x18\x18 \x01(\x03\x12\x11\n\tprep_time\x18\x19 \x01(\x03\x12\x0e\n\x06\x63onfig\x18\x1a \x03(\t\x12\x1a\n\x12uncaught_exception\x18\x1b \x01(\t\x12\x14\n\x0c\x61ttributions\x18\x1c \x03(\t\x12\n\n\x02os\x18\x1d \x01(\t\x12\x10\n\x08timezone\x18\x1e \x01(\t\x12\x10\n\x08headless\x18\x1f \x01(\x08\x12\x17\n\x0fis_fragment_run\x18 \x01(\x08\x12\x10\n\x08numPages\x18\" \x01(\x03\x12\x18\n\x10page_script_hash\x18% \x01(\t\x12\x14\n\x0c\x61\x63tive_theme\x18& \x01(\t\x12\x17\n\x0ftotal_load_time\x18\' \x01(\x03\x12\"\n\x0c\x62rowser_info\x18( \x01(\x0b\x32\x0c.BrowserInfo\"]\n\x0b\x42rowserInfo\x12\x14\n\x0c\x62rowser_name\x18\x01 \x01(\t\x12\x17\n\x0f\x62rowser_version\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65vice_type\x18\x03 \x01(\t\x12\n\n\x02os\x18\x04 \x01(\tB1\n\x1c\x63om.snowflake.apps.streamlitB\x11MetricsEventProtob\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"streamlit/proto/MetricsEvent.proto\x1a!streamlit/proto/PageProfile.proto\"\x8c\x07\n\x0cMetricsEvent\x12\r\n\x05\x65vent\x18\x01 \x01(\t\x12\x14\n\x0c\x61nonymous_id\x18\x02 \x01(\t\x12\x15\n\rmachine_id_v3\x18\x03 \x01(\t\x12 \n\x18stable_random_machine_id\x18) \x01(\t\x12\x13\n\x0breport_hash\x18\x04 \x01(\t\x12\x0b\n\x03\x64\x65v\x18\x05 \x01(\x08\x12\x0e\n\x06source\x18\x06 \x01(\t\x12\x19\n\x11streamlit_version\x18\x07 \x01(\t\x12\x10\n\x08is_hello\x18\x08 \x01(\x08\x12\x0e\n\x06\x61pp_id\x18! \x01(\t\x12\x12\n\nsession_id\x18# \x01(\t\x12\x16\n\x0epython_version\x18$ \x01(\t\x12\x11\n\thosted_at\x18\t \x01(\t\x12\r\n\x05owner\x18\n \x01(\t\x12\x0c\n\x04repo\x18\x0b \x01(\t\x12\x0e\n\x06\x62ranch\x18\x0c \x01(\t\x12\x13\n\x0bmain_module\x18\r \x01(\t\x12\x12\n\ncreator_id\x18\x0e \x01(\t\x12\x18\n\x10\x63ontext_page_url\x18\x0f \x01(\t\x12\x1a\n\x12\x63ontext_page_title\x18\x10 \x01(\t\x12\x19\n\x11\x63ontext_page_path\x18\x11 \x01(\t\x12\x1d\n\x15\x63ontext_page_referrer\x18\x12 \x01(\t\x12\x1b\n\x13\x63ontext_page_search\x18\x13 \x01(\t\x12\x16\n\x0e\x63ontext_locale\x18\x14 \x01(\t\x12\x1a\n\x12\x63ontext_user_agent\x18\x15 \x01(\t\x12\r\n\x05label\x18\x16 \x01(\t\x12\x1a\n\x08\x63ommands\x18\x17 \x03(\x0b\x32\x08.Command\x12\x11\n\texec_time\x18\x18 \x01(\x03\x12\x11\n\tprep_time\x18\x19 \x01(\x03\x12\x0e\n\x06\x63onfig\x18\x1a \x03(\t\x12\x1a\n\x12uncaught_exception\x18\x1b \x01(\t\x12\x14\n\x0c\x61ttributions\x18\x1c \x03(\t\x12\n\n\x02os\x18\x1d \x01(\t\x12\x10\n\x08timezone\x18\x1e \x01(\t\x12\x10\n\x08headless\x18\x1f \x01(\x08\x12\x17\n\x0fis_fragment_run\x18 \x01(\x08\x12\x10\n\x08numPages\x18\" \x01(\x03\x12\x18\n\x10page_script_hash\x18% \x01(\t\x12\x14\n\x0c\x61\x63tive_theme\x18& \x01(\t\x12\x17\n\x0ftotal_load_time\x18\' \x01(\x03\x12\"\n\x0c\x62rowser_info\x18( \x01(\x0b\x32\x0c.BrowserInfo\"]\n\x0b\x42rowserInfo\x12\x14\n\x0c\x62rowser_name\x18\x01 \x01(\t\x12\x17\n\x0f\x62rowser_version\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65vice_type\x18\x03 \x01(\t\x12\n\n\x02os\x18\x04 \x01(\tB1\n\x1c\x63om.snowflake.apps.streamlitB\x11MetricsEventProtob\x06proto3')
19
19
 
20
20
  _globals = globals()
21
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -24,7 +24,7 @@ if not _descriptor._USE_C_DESCRIPTORS:
24
24
  _globals['DESCRIPTOR']._loaded_options = None
25
25
  _globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\021MetricsEventProto'
26
26
  _globals['_METRICSEVENT']._serialized_start=74
27
- _globals['_METRICSEVENT']._serialized_end=948
28
- _globals['_BROWSERINFO']._serialized_start=950
29
- _globals['_BROWSERINFO']._serialized_end=1043
27
+ _globals['_METRICSEVENT']._serialized_end=982
28
+ _globals['_BROWSERINFO']._serialized_start=984
29
+ _globals['_BROWSERINFO']._serialized_end=1077
30
30
  # @@protoc_insertion_point(module_scope)
@@ -36,6 +36,7 @@ class MetricsEvent(google.protobuf.message.Message):
36
36
  EVENT_FIELD_NUMBER: builtins.int
37
37
  ANONYMOUS_ID_FIELD_NUMBER: builtins.int
38
38
  MACHINE_ID_V3_FIELD_NUMBER: builtins.int
39
+ STABLE_RANDOM_MACHINE_ID_FIELD_NUMBER: builtins.int
39
40
  REPORT_HASH_FIELD_NUMBER: builtins.int
40
41
  DEV_FIELD_NUMBER: builtins.int
41
42
  SOURCE_FIELD_NUMBER: builtins.int
@@ -77,6 +78,7 @@ class MetricsEvent(google.protobuf.message.Message):
77
78
  """Common Event Fields:"""
78
79
  anonymous_id: builtins.str
79
80
  machine_id_v3: builtins.str
81
+ stable_random_machine_id: builtins.str
80
82
  report_hash: builtins.str
81
83
  dev: builtins.bool
82
84
  source: builtins.str
@@ -132,6 +134,7 @@ class MetricsEvent(google.protobuf.message.Message):
132
134
  event: builtins.str = ...,
133
135
  anonymous_id: builtins.str = ...,
134
136
  machine_id_v3: builtins.str = ...,
137
+ stable_random_machine_id: builtins.str = ...,
135
138
  report_hash: builtins.str = ...,
136
139
  dev: builtins.bool = ...,
137
140
  source: builtins.str = ...,
@@ -171,7 +174,7 @@ class MetricsEvent(google.protobuf.message.Message):
171
174
  browser_info: global___BrowserInfo | None = ...,
172
175
  ) -> None: ...
173
176
  def HasField(self, field_name: typing.Literal["browser_info", b"browser_info"]) -> builtins.bool: ...
174
- def ClearField(self, field_name: typing.Literal["active_theme", b"active_theme", "anonymous_id", b"anonymous_id", "app_id", b"app_id", "attributions", b"attributions", "branch", b"branch", "browser_info", b"browser_info", "commands", b"commands", "config", b"config", "context_locale", b"context_locale", "context_page_path", b"context_page_path", "context_page_referrer", b"context_page_referrer", "context_page_search", b"context_page_search", "context_page_title", b"context_page_title", "context_page_url", b"context_page_url", "context_user_agent", b"context_user_agent", "creator_id", b"creator_id", "dev", b"dev", "event", b"event", "exec_time", b"exec_time", "headless", b"headless", "hosted_at", b"hosted_at", "is_fragment_run", b"is_fragment_run", "is_hello", b"is_hello", "label", b"label", "machine_id_v3", b"machine_id_v3", "main_module", b"main_module", "numPages", b"numPages", "os", b"os", "owner", b"owner", "page_script_hash", b"page_script_hash", "prep_time", b"prep_time", "python_version", b"python_version", "repo", b"repo", "report_hash", b"report_hash", "session_id", b"session_id", "source", b"source", "streamlit_version", b"streamlit_version", "timezone", b"timezone", "total_load_time", b"total_load_time", "uncaught_exception", b"uncaught_exception"]) -> None: ...
177
+ def ClearField(self, field_name: typing.Literal["active_theme", b"active_theme", "anonymous_id", b"anonymous_id", "app_id", b"app_id", "attributions", b"attributions", "branch", b"branch", "browser_info", b"browser_info", "commands", b"commands", "config", b"config", "context_locale", b"context_locale", "context_page_path", b"context_page_path", "context_page_referrer", b"context_page_referrer", "context_page_search", b"context_page_search", "context_page_title", b"context_page_title", "context_page_url", b"context_page_url", "context_user_agent", b"context_user_agent", "creator_id", b"creator_id", "dev", b"dev", "event", b"event", "exec_time", b"exec_time", "headless", b"headless", "hosted_at", b"hosted_at", "is_fragment_run", b"is_fragment_run", "is_hello", b"is_hello", "label", b"label", "machine_id_v3", b"machine_id_v3", "main_module", b"main_module", "numPages", b"numPages", "os", b"os", "owner", b"owner", "page_script_hash", b"page_script_hash", "prep_time", b"prep_time", "python_version", b"python_version", "repo", b"repo", "report_hash", b"report_hash", "session_id", b"session_id", "source", b"source", "stable_random_machine_id", b"stable_random_machine_id", "streamlit_version", b"streamlit_version", "timezone", b"timezone", "total_load_time", b"total_load_time", "uncaught_exception", b"uncaught_exception"]) -> None: ...
175
178
 
176
179
  global___MetricsEvent = MetricsEvent
177
180
 
@@ -16,7 +16,7 @@ from streamlit.proto import AppPage_pb2 as streamlit_dot_proto_dot_AppPage__pb2
16
16
  from streamlit.proto import SessionStatus_pb2 as streamlit_dot_proto_dot_SessionStatus__pb2
17
17
 
18
18
 
19
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n streamlit/proto/NewSession.proto\x1a\x1dstreamlit/proto/AppPage.proto\x1a#streamlit/proto/SessionStatus.proto\"\xa5\x02\n\nNewSession\x12\x1f\n\ninitialize\x18\x01 \x01(\x0b\x32\x0b.Initialize\x12\x15\n\rscript_run_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x18\n\x10main_script_path\x18\x04 \x01(\t\x12\x17\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x07.Config\x12(\n\x0c\x63ustom_theme\x18\x07 \x01(\x0b\x32\x12.CustomThemeConfig\x12\x1b\n\tapp_pages\x18\x08 \x03(\x0b\x32\x08.AppPage\x12\x18\n\x10page_script_hash\x18\t \x01(\t\x12\x1d\n\x15\x66ragment_ids_this_run\x18\n \x03(\t\x12\x18\n\x10main_script_hash\x18\x0b \x01(\tJ\x04\x08\x05\x10\x06\"\xba\x01\n\nInitialize\x12\x1c\n\tuser_info\x18\x01 \x01(\x0b\x32\t.UserInfo\x12*\n\x10\x65nvironment_info\x18\x03 \x01(\x0b\x32\x10.EnvironmentInfo\x12&\n\x0esession_status\x18\x04 \x01(\x0b\x32\x0e.SessionStatus\x12\x14\n\x0c\x63ommand_line\x18\x05 \x01(\t\x12\x12\n\nsession_id\x18\x06 \x01(\t\x12\x10\n\x08is_hello\x18\x07 \x01(\x08\"\x97\x02\n\x06\x43onfig\x12\x1a\n\x12gather_usage_stats\x18\x02 \x01(\x08\x12\x1e\n\x16max_cached_message_age\x18\x03 \x01(\x05\x12\x14\n\x0cmapbox_token\x18\x04 \x01(\t\x12\x19\n\x11\x61llow_run_on_save\x18\x05 \x01(\x08\x12\x14\n\x0chide_top_bar\x18\x06 \x01(\x08\x12\x18\n\x10hide_sidebar_nav\x18\x07 \x01(\x08\x12)\n\x0ctoolbar_mode\x18\x08 \x01(\x0e\x32\x13.Config.ToolbarMode\"?\n\x0bToolbarMode\x12\x08\n\x04\x41UTO\x10\x00\x12\r\n\tDEVELOPER\x10\x01\x12\n\n\x06VIEWER\x10\x02\x12\x0b\n\x07MINIMAL\x10\x03J\x04\x08\x01\x10\x02\"\xb6\x07\n\x11\x43ustomThemeConfig\x12\x15\n\rprimary_color\x18\x01 \x01(\t\x12\"\n\x1asecondary_background_color\x18\x02 \x01(\t\x12\x18\n\x10\x62\x61\x63kground_color\x18\x03 \x01(\t\x12\x12\n\ntext_color\x18\x04 \x01(\t\x12+\n\x04\x66ont\x18\x05 \x01(\x0e\x32\x1d.CustomThemeConfig.FontFamily\x12*\n\x04\x62\x61se\x18\x06 \x01(\x0e\x32\x1c.CustomThemeConfig.BaseTheme\x12\x1f\n\x17widget_background_color\x18\x07 \x01(\t\x12\x1b\n\x13widget_border_color\x18\x08 \x01(\t\x12\x15\n\x05radii\x18\t \x01(\x0b\x32\x06.Radii\x12\x14\n\x0cheading_font\x18\x0c \x01(\t\x12\x11\n\tbody_font\x18\r \x01(\t\x12\x11\n\tcode_font\x18\x0e \x01(\t\x12\x1d\n\nfont_faces\x18\x0f \x03(\x0b\x32\t.FontFace\x12\x1e\n\nfont_sizes\x18\x10 \x01(\x0b\x32\n.FontSizes\x12!\n\x19skeleton_background_color\x18\x11 \x01(\t\x12\x18\n\x0b\x62\x61se_radius\x18\x12 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0c\x62order_color\x18\x13 \x01(\tH\x01\x88\x01\x01\x12\x1f\n\x12show_widget_border\x18\x14 \x01(\x08H\x02\x88\x01\x01\x12\x17\n\nlink_color\x18\x15 \x01(\tH\x03\x88\x01\x01\x12\x1b\n\x0e\x62\x61se_font_size\x18\x16 \x01(\x05H\x04\x88\x01\x01\x12 \n\x13show_sidebar_border\x18\x17 \x01(\x08H\x05\x88\x01\x01\x12(\n\x07sidebar\x18\x18 \x01(\x0b\x32\x12.CustomThemeConfigH\x06\x88\x01\x01\x12\"\n\x15\x63ode_background_color\x18\x19 \x01(\tH\x07\x88\x01\x01\" \n\tBaseTheme\x12\t\n\x05LIGHT\x10\x00\x12\x08\n\x04\x44\x41RK\x10\x01\"6\n\nFontFamily\x12\x0e\n\nSANS_SERIF\x10\x00\x12\t\n\x05SERIF\x10\x01\x12\r\n\tMONOSPACE\x10\x02\x42\x0e\n\x0c_base_radiusB\x0f\n\r_border_colorB\x15\n\x13_show_widget_borderB\r\n\x0b_link_colorB\x11\n\x0f_base_font_sizeB\x16\n\x14_show_sidebar_borderB\n\n\x08_sidebarB\x18\n\x16_code_background_color\"F\n\x08\x46ontFace\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x0e\n\x06\x66\x61mily\x18\x02 \x01(\t\x12\x0e\n\x06weight\x18\x03 \x01(\x05\x12\r\n\x05style\x18\x04 \x01(\t\"<\n\x05Radii\x12\x1a\n\x12\x62\x61se_widget_radius\x18\x01 \x01(\x05\x12\x17\n\x0f\x63heckbox_radius\x18\x02 \x01(\x05\"T\n\tFontSizes\x12\x16\n\x0etiny_font_size\x18\x01 \x01(\x05\x12\x17\n\x0fsmall_font_size\x18\x02 \x01(\x05\x12\x16\n\x0e\x62\x61se_font_size\x18\x03 \x01(\x05\"E\n\x08UserInfo\x12\x17\n\x0finstallation_id\x18\x01 \x01(\t\x12\x1a\n\x12installation_id_v3\x18\x05 \x01(\tJ\x04\x08\x02\x10\x03\"D\n\x0f\x45nvironmentInfo\x12\x19\n\x11streamlit_version\x18\x01 \x01(\t\x12\x16\n\x0epython_version\x18\x02 \x01(\tB/\n\x1c\x63om.snowflake.apps.streamlitB\x0fNewSessionProtob\x06proto3')
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n streamlit/proto/NewSession.proto\x1a\x1dstreamlit/proto/AppPage.proto\x1a#streamlit/proto/SessionStatus.proto\"\xa5\x02\n\nNewSession\x12\x1f\n\ninitialize\x18\x01 \x01(\x0b\x32\x0b.Initialize\x12\x15\n\rscript_run_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x18\n\x10main_script_path\x18\x04 \x01(\t\x12\x17\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x07.Config\x12(\n\x0c\x63ustom_theme\x18\x07 \x01(\x0b\x32\x12.CustomThemeConfig\x12\x1b\n\tapp_pages\x18\x08 \x03(\x0b\x32\x08.AppPage\x12\x18\n\x10page_script_hash\x18\t \x01(\t\x12\x1d\n\x15\x66ragment_ids_this_run\x18\n \x03(\t\x12\x18\n\x10main_script_hash\x18\x0b \x01(\tJ\x04\x08\x05\x10\x06\"\xba\x01\n\nInitialize\x12\x1c\n\tuser_info\x18\x01 \x01(\x0b\x32\t.UserInfo\x12*\n\x10\x65nvironment_info\x18\x03 \x01(\x0b\x32\x10.EnvironmentInfo\x12&\n\x0esession_status\x18\x04 \x01(\x0b\x32\x0e.SessionStatus\x12\x14\n\x0c\x63ommand_line\x18\x05 \x01(\t\x12\x12\n\nsession_id\x18\x06 \x01(\t\x12\x10\n\x08is_hello\x18\x07 \x01(\x08\"\x97\x02\n\x06\x43onfig\x12\x1a\n\x12gather_usage_stats\x18\x02 \x01(\x08\x12\x1e\n\x16max_cached_message_age\x18\x03 \x01(\x05\x12\x14\n\x0cmapbox_token\x18\x04 \x01(\t\x12\x19\n\x11\x61llow_run_on_save\x18\x05 \x01(\x08\x12\x14\n\x0chide_top_bar\x18\x06 \x01(\x08\x12\x18\n\x10hide_sidebar_nav\x18\x07 \x01(\x08\x12)\n\x0ctoolbar_mode\x18\x08 \x01(\x0e\x32\x13.Config.ToolbarMode\"?\n\x0bToolbarMode\x12\x08\n\x04\x41UTO\x10\x00\x12\r\n\tDEVELOPER\x10\x01\x12\n\n\x06VIEWER\x10\x02\x12\x0b\n\x07MINIMAL\x10\x03J\x04\x08\x01\x10\x02\"\xb6\x07\n\x11\x43ustomThemeConfig\x12\x15\n\rprimary_color\x18\x01 \x01(\t\x12\"\n\x1asecondary_background_color\x18\x02 \x01(\t\x12\x18\n\x10\x62\x61\x63kground_color\x18\x03 \x01(\t\x12\x12\n\ntext_color\x18\x04 \x01(\t\x12+\n\x04\x66ont\x18\x05 \x01(\x0e\x32\x1d.CustomThemeConfig.FontFamily\x12*\n\x04\x62\x61se\x18\x06 \x01(\x0e\x32\x1c.CustomThemeConfig.BaseTheme\x12\x1f\n\x17widget_background_color\x18\x07 \x01(\t\x12\x1b\n\x13widget_border_color\x18\x08 \x01(\t\x12\x15\n\x05radii\x18\t \x01(\x0b\x32\x06.Radii\x12\x14\n\x0cheading_font\x18\x0c \x01(\t\x12\x11\n\tbody_font\x18\r \x01(\t\x12\x11\n\tcode_font\x18\x0e \x01(\t\x12\x1d\n\nfont_faces\x18\x0f \x03(\x0b\x32\t.FontFace\x12\x1e\n\nfont_sizes\x18\x10 \x01(\x0b\x32\n.FontSizes\x12!\n\x19skeleton_background_color\x18\x11 \x01(\t\x12\x18\n\x0b\x62\x61se_radius\x18\x12 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0c\x62order_color\x18\x13 \x01(\tH\x01\x88\x01\x01\x12\x1f\n\x12show_widget_border\x18\x14 \x01(\x08H\x02\x88\x01\x01\x12\x17\n\nlink_color\x18\x15 \x01(\tH\x03\x88\x01\x01\x12\x1b\n\x0e\x62\x61se_font_size\x18\x16 \x01(\x05H\x04\x88\x01\x01\x12 \n\x13show_sidebar_border\x18\x17 \x01(\x08H\x05\x88\x01\x01\x12(\n\x07sidebar\x18\x18 \x01(\x0b\x32\x12.CustomThemeConfigH\x06\x88\x01\x01\x12\"\n\x15\x63ode_background_color\x18\x19 \x01(\tH\x07\x88\x01\x01\" \n\tBaseTheme\x12\t\n\x05LIGHT\x10\x00\x12\x08\n\x04\x44\x41RK\x10\x01\"6\n\nFontFamily\x12\x0e\n\nSANS_SERIF\x10\x00\x12\t\n\x05SERIF\x10\x01\x12\r\n\tMONOSPACE\x10\x02\x42\x0e\n\x0c_base_radiusB\x0f\n\r_border_colorB\x15\n\x13_show_widget_borderB\r\n\x0b_link_colorB\x11\n\x0f_base_font_sizeB\x16\n\x14_show_sidebar_borderB\n\n\x08_sidebarB\x18\n\x16_code_background_color\"F\n\x08\x46ontFace\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x0e\n\x06\x66\x61mily\x18\x02 \x01(\t\x12\x0e\n\x06weight\x18\x03 \x01(\x05\x12\r\n\x05style\x18\x04 \x01(\t\"<\n\x05Radii\x12\x1a\n\x12\x62\x61se_widget_radius\x18\x01 \x01(\x05\x12\x17\n\x0f\x63heckbox_radius\x18\x02 \x01(\x05\"T\n\tFontSizes\x12\x16\n\x0etiny_font_size\x18\x01 \x01(\x05\x12\x17\n\x0fsmall_font_size\x18\x02 \x01(\x05\x12\x16\n\x0e\x62\x61se_font_size\x18\x03 \x01(\x05\"g\n\x08UserInfo\x12\x17\n\x0finstallation_id\x18\x01 \x01(\t\x12\x1a\n\x12installation_id_v3\x18\x05 \x01(\t\x12 \n\x18stable_random_machine_id\x18\x06 \x01(\tJ\x04\x08\x02\x10\x03\"D\n\x0f\x45nvironmentInfo\x12\x19\n\x11streamlit_version\x18\x01 \x01(\t\x12\x16\n\x0epython_version\x18\x02 \x01(\tB/\n\x1c\x63om.snowflake.apps.streamlitB\x0fNewSessionProtob\x06proto3')
20
20
 
21
21
  _globals = globals()
22
22
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -45,7 +45,7 @@ if not _descriptor._USE_C_DESCRIPTORS:
45
45
  _globals['_FONTSIZES']._serialized_start=1958
46
46
  _globals['_FONTSIZES']._serialized_end=2042
47
47
  _globals['_USERINFO']._serialized_start=2044
48
- _globals['_USERINFO']._serialized_end=2113
49
- _globals['_ENVIRONMENTINFO']._serialized_start=2115
50
- _globals['_ENVIRONMENTINFO']._serialized_end=2183
48
+ _globals['_USERINFO']._serialized_end=2147
49
+ _globals['_ENVIRONMENTINFO']._serialized_start=2149
50
+ _globals['_ENVIRONMENTINFO']._serialized_end=2217
51
51
  # @@protoc_insertion_point(module_scope)
@@ -454,15 +454,18 @@ class UserInfo(google.protobuf.message.Message):
454
454
 
455
455
  INSTALLATION_ID_FIELD_NUMBER: builtins.int
456
456
  INSTALLATION_ID_V3_FIELD_NUMBER: builtins.int
457
+ STABLE_RANDOM_MACHINE_ID_FIELD_NUMBER: builtins.int
457
458
  installation_id: builtins.str
458
459
  installation_id_v3: builtins.str
460
+ stable_random_machine_id: builtins.str
459
461
  def __init__(
460
462
  self,
461
463
  *,
462
464
  installation_id: builtins.str = ...,
463
465
  installation_id_v3: builtins.str = ...,
466
+ stable_random_machine_id: builtins.str = ...,
464
467
  ) -> None: ...
465
- def ClearField(self, field_name: typing.Literal["installation_id", b"installation_id", "installation_id_v3", b"installation_id_v3"]) -> None: ...
468
+ def ClearField(self, field_name: typing.Literal["installation_id", b"installation_id", "installation_id_v3", b"installation_id_v3", "stable_random_machine_id", b"stable_random_machine_id"]) -> None: ...
466
469
 
467
470
  global___UserInfo = UserInfo
468
471
 
@@ -608,12 +608,12 @@ class AppSession:
608
608
 
609
609
  self._clear_queue(fragment_ids_this_run)
610
610
 
611
- self._enqueue_forward_msg(
612
- self._create_new_session_message(
613
- page_script_hash, fragment_ids_this_run, pages
614
- )
611
+ msg = self._create_new_session_message(
612
+ page_script_hash, fragment_ids_this_run, pages
615
613
  )
616
614
 
615
+ self._enqueue_forward_msg(msg)
616
+
617
617
  elif (
618
618
  event == ScriptRunnerEvent.SCRIPT_STOPPED_WITH_SUCCESS
619
619
  or event == ScriptRunnerEvent.SCRIPT_STOPPED_WITH_COMPILE_ERROR
@@ -982,5 +982,7 @@ def _populate_theme_msg(msg: CustomThemeConfig, section: str = "theme") -> None:
982
982
 
983
983
 
984
984
  def _populate_user_info_msg(msg: UserInfo) -> None:
985
- msg.installation_id = Installation.instance().installation_id
986
- msg.installation_id_v3 = Installation.instance().installation_id_v3
985
+ inst = Installation.instance()
986
+ msg.installation_id = inst.installation_id
987
+ msg.installation_id_v3 = inst.installation_id_v3
988
+ msg.stable_random_machine_id = inst.stable_random_machine_id
@@ -25,7 +25,7 @@ from collections.abc import Sized
25
25
  from functools import wraps
26
26
  from typing import Any, Callable, Final, TypeVar, cast, overload
27
27
 
28
- from streamlit import config, util
28
+ from streamlit import config, file_util, util
29
29
  from streamlit.logger import get_logger
30
30
  from streamlit.proto.ForwardMsg_pb2 import ForwardMsg
31
31
  from streamlit.proto.PageProfile_pb2 import Argument, Command
@@ -168,7 +168,6 @@ def _get_machine_id_v3() -> str:
168
168
  - at times a hash of the same string, when running in a Docker container
169
169
  """
170
170
 
171
- machine_id = str(uuid.getnode())
172
171
  if os.path.isfile(_ETC_MACHINE_ID_PATH):
173
172
  with open(_ETC_MACHINE_ID_PATH) as f:
174
173
  machine_id = f.read()
@@ -177,9 +176,42 @@ def _get_machine_id_v3() -> str:
177
176
  with open(_DBUS_MACHINE_ID_PATH) as f:
178
177
  machine_id = f.read()
179
178
 
179
+ else:
180
+ machine_id = str(uuid.getnode())
181
+
180
182
  return machine_id
181
183
 
182
184
 
185
+ def _get_stable_random_machine_id() -> str:
186
+ """Get a random ID that is stable for each machine, generating if needed.
187
+
188
+ This is a unique identifier for a user for tracking metrics.
189
+ Instead of relying on a hardware address in the container or host we'll
190
+ generate a UUID and store it in the ~/.streamlit hidden folder.
191
+ """
192
+ # If gatherUsageStats is False skip this whole code.
193
+ # This is just for people who don't want the extra stable_random_machine_id file
194
+ # in their file system.
195
+ if not config.get_option("browser.gatherUsageStats"):
196
+ # This value will never be sent to our telemetry. Just including it here
197
+ # to help debug.
198
+ return "no-stable-random-machine-id"
199
+
200
+ filepath = file_util.get_streamlit_file_path("stable_random_machine_id")
201
+ stable_id = None
202
+
203
+ if os.path.exists(filepath):
204
+ with file_util.streamlit_read(filepath) as input:
205
+ stable_id = input.read()
206
+
207
+ if not stable_id:
208
+ stable_id = str(uuid.uuid4())
209
+ with file_util.streamlit_write(filepath) as output:
210
+ output.write(stable_id)
211
+
212
+ return stable_id
213
+
214
+
183
215
  class Installation:
184
216
  _instance_lock = threading.Lock()
185
217
  _instance: Installation | None = None
@@ -201,6 +233,8 @@ class Installation:
201
233
  uuid.uuid5(uuid.NAMESPACE_DNS, _get_machine_id_v3())
202
234
  )
203
235
 
236
+ self.stable_random_machine_id = _get_stable_random_machine_id()
237
+
204
238
  def __repr__(self) -> str:
205
239
  return util.repr_(self)
206
240
 
@@ -51,7 +51,7 @@
51
51
  <script>
52
52
  window.prerenderReady = false
53
53
  </script>
54
- <script type="module" crossorigin src="./static/js/index.DCKU7zCS.js"></script>
54
+ <script type="module" crossorigin src="./static/js/index.CnEhB-fE.js"></script>
55
55
  <link rel="stylesheet" crossorigin href="./static/css/index.DqDwtg6_.css">
56
56
  </head>
57
57
  <body>
@@ -1 +1 @@
1
- import{r,E as a,_ as n}from"./index.DCKU7zCS.js";var i=r.forwardRef(function(e,t){var o={fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"};return r.createElement(a,n({iconAttrs:o,iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},e,{ref:t}),r.createElement("path",{d:"M11 15h2v2h-2v-2zm0-8h2v6h-2V7zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}))});i.displayName="ErrorOutline";export{i as E};
1
+ import{r,E as a,_ as n}from"./index.CnEhB-fE.js";var i=r.forwardRef(function(e,t){var o={fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"};return r.createElement(a,n({iconAttrs:o,iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},e,{ref:t}),r.createElement("path",{d:"M11 15h2v2h-2v-2zm0-8h2v6h-2V7zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}))});i.displayName="ErrorOutline";export{i as E};
@@ -1 +1 @@
1
- import{r as e,E as n,_ as a}from"./index.DCKU7zCS.js";var o=e.forwardRef(function(t,r){var l={fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"};return e.createElement(n,a({iconAttrs:l,iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},t,{ref:r}),e.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),e.createElement("path",{d:"M16 9v10H8V9h8m-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7z"}))});o.displayName="Delete";var i=e.forwardRef(function(t,r){var l={fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"};return e.createElement(n,a({iconAttrs:l,iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},t,{ref:r}),e.createElement("rect",{width:24,height:24,fill:"none"}),e.createElement("path",{d:"M18 15v3H6v-3H4v3c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-3h-2zm-1-4l-1.41-1.41L13 12.17V4h-2v8.17L8.41 9.59 7 11l5 5 5-5z"}))});i.displayName="FileDownload";export{o as D,i as F};
1
+ import{r as e,E as n,_ as a}from"./index.CnEhB-fE.js";var o=e.forwardRef(function(t,r){var l={fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"};return e.createElement(n,a({iconAttrs:l,iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},t,{ref:r}),e.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),e.createElement("path",{d:"M16 9v10H8V9h8m-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7z"}))});o.displayName="Delete";var i=e.forwardRef(function(t,r){var l={fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"};return e.createElement(n,a({iconAttrs:l,iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},t,{ref:r}),e.createElement("rect",{width:24,height:24,fill:"none"}),e.createElement("path",{d:"M18 15v3H6v-3H4v3c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-3h-2zm-1-4l-1.41-1.41L13 12.17V4h-2v8.17L8.41 9.59 7 11l5 5 5-5z"}))});i.displayName="FileDownload";export{o as D,i as F};